<?php

/**
 * referencias actions.
 *
 * @package    atenea
 * @subpackage referencias
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $
 */
class referenciasActions extends autoreferenciasActions
{
public function executeIndex()
  {
    return $this->forward('referencias', 'create');
  }

  
  
  public function executeEspecialistas()
	{
	  if ($this->getRequestParameter('ajax')=='1')
	    {

	    	$c2 = new Criteria();
	    	$c2->add(AteneausuarioPeer::ROL_ID,$this->getRequestParameter('rol'));
	    	$c2->addJoin(AteneausuarioPeer::ID, DatoPersonalPeer::USUARIO_ID);
	        $this->especialistas = DatoPersonalPeer::doSelect($c2);
	    	
             
	  }
	}
	
	/**nuevo*/
 public function executeEspecialistas2()
	{
	  if ($this->getRequestParameter('ajax')=='1')
	    {

	    $this->referido_id= $this->getRequestParameter('referido_id');
		          
	  }
	}
	

 public function executeRoles()
	{
	  if ($this->getRequestParameter('ajax')=='1')
	    {
          if ($this->getRequestParameter('tipo_referencia')==1)
          {
	    	        $objsRol = new Rol();
                    $roles = $objsRol->getRolesDeEspecialistas();
                    $this->idEspecialista = 1;
                    $objUsu = AteneausuarioPeer::retrieveByPk($this->idEspecialista);
                    $this->rol = RolPeer::retrieveByPk($objUsu->getRolId())->getId();
          			$this->especialidades = $roles;
          }
         else 
         {
          if ($this->getRequestParameter('tipo_referencia')==2)
          {
            $c = new Criteria();
	    	$this->especialidades =TabEspecialidadesPeer::doSelect($c);
          }	
         	
         } 	    	
             
	  }
	}	
	
 
 


  public function executeNombre()
  {
  	                
   if ($this->getRequestParameter('ajax')=='1')
	  {
            		$objEstudiante = new Estudiante();           			
            		$this->ced = $this->getRequestParameter('cedula');
            	        		
            	    $datos = $objEstudiante->getDatosDelEstudianteConCed($this->ced);
            	    $this->estudiante =$datos;
                            	    
            	                      
         			  if ($this->estudiante == null)
         			   {

         				$this->setFlash('notice', 'Esta cedula no le pertenece a un estudiante');
                       // return  $this->redirect('referencias/create');
                          
         			    }
         			   else
         		     	{

         		    
                     	
         		        $objUsu = $datos->getObjAteneaUsuarioConCed();
					  	$this->usuario = $objUsu;                        
         			    }
         	
	  }
 }
  
  
  
  
  public function executeList()
  {
    $this->processSort();

    $this->processFilters();


    // pager
    $this->pager = new sfPropelPager('Ateneareferencia', 20);
    $c = new Criteria();
    $this->addSortCriteria($c);
    $this->addFiltersCriteria($c);
    $this->pager->setCriteria($c);
    $this->pager->setPage($this->getRequestParameter('page', 1));
    $this->pager->init();
  }

  public function executeCreate()
  {
  
  	return $this->forward('referencias', 'edit');
  }

  public function executeSave()
  { 
  	
    return $this->forward('referencias', 'create');
  }

  public function executeEdit()
  {
    $this->ateneareferencia = $this->getAteneareferenciaOrCreate();

    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      $this->updateAteneareferenciaFromRequest();

      $this->saveAteneareferencia($this->ateneareferencia);

      $this->setFlash('notice', 'Your modifications have been saved');

      if ($this->getRequestParameter('save_and_add'))
      {
        return $this->redirect('referencias/create');
      }
      else if ($this->getRequestParameter('save_and_list'))
      {
        return $this->redirect('referencias/list');
      }
      else
      {
        return $this->redirect('referencias/edit?id='.$this->ateneareferencia->getId());
      }
    }
    else
    {
      $this->labels = $this->getLabels();
    }
  }

  public function executeDelete()
  {
    $this->ateneareferencia = AteneareferenciaPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->forward404Unless($this->ateneareferencia);

    try
    {
      $this->deleteAteneareferencia($this->ateneareferencia);
    }
    catch (PropelException $e)
    {
      $this->getRequest()->setError('delete', 'Could not delete the selected Ateneareferencia. Make sure it does not have any associated items.');
      return $this->forward('referencias', 'list');
    }

    return $this->redirect('referencias/list');
  }

  public function handleErrorEdit()
  {
    $this->preExecute();
    $this->ateneareferencia = $this->getAteneareferenciaOrCreate();
    $this->updateAteneareferenciaFromRequest();

    $this->labels = $this->getLabels();

    return sfView::SUCCESS;
  }

  protected function saveAteneareferencia($ateneareferencia)
  {
    
  	$ateneareferencia->save();

  }

  protected function deleteAteneareferencia($ateneareferencia)
  {
    $ateneareferencia->delete();
  }

  protected function updateAteneareferenciaFromRequest()
  {
  	
    $ateneareferencia = $this->getRequestParameter('ateneareferencia');
    $ateneareferencia['fecha']= date('Y-m-d');

    $ateneareferencia['referido_id']=$this->getUser()->getAttribute('referido_id');

    if (isset($ateneareferencia['referido_id']))
    {
      $this->ateneareferencia->setReferidoId($ateneareferencia['referido_id']);
    }

    /*if (isset($ateneareferencia['fecha']))
    {
      if ($ateneareferencia['fecha'])
      {
        try
        {
          $dateFormat = new sfDateFormat($this->getUser()->getCulture());
                              if (!is_array($ateneareferencia['fecha']))
          {
            $value = $dateFormat->format($ateneareferencia['fecha'], 'i', $dateFormat->getInputPattern('d'));
          }
          else
          {
            $value_array = $ateneareferencia['fecha'];
            $value = $value_array['year'].'-'.$value_array['month'].'-'.$value_array['day'].(isset($value_array['hour']) ? ' '.$value_array['hour'].':'.$value_array['minute'].(isset($value_array['second']) ? ':'.$value_array['second'] : '') : '');
          }
          $this->ateneareferencia->setFecha($value);
        }
        catch (sfException $e)
        {
          // not a date
        }
      }
      else
      {
        $this->ateneareferencia->setFecha(null);
      }
    }*/
    
     $this->ateneareferencia->setFecha($ateneareferencia['fecha']);
   $ateneareferencia['numero_consulta']=$this->getUser()->getAttribute('numero_consulta');
    $ateneareferencia['tipo_referencia'] = $this->getUser()->getAttribute('tipo_referencia');;
   	
    
    if (isset($ateneareferencia['tipo_referencia']))
    {
      $this->ateneareferencia->setTipoReferencia($ateneareferencia['tipo_referencia']);
    }
    
    if (isset($ateneareferencia['numero_consulta']))
    {
      $this->ateneareferencia->setNumeroConsulta($ateneareferencia['numero_consulta']); 
    }
    if (isset($ateneareferencia['motivo_ref']))
    {
      $this->ateneareferencia->setMotivoRef($ateneareferencia['motivo_ref']);
    }
    if (isset($ateneareferencia['recomendaciones']))
    {
      $this->ateneareferencia->setRecomendaciones($ateneareferencia['recomendaciones']);
    }
    
    
    
  }

  protected function getAteneareferenciaOrCreate($id = 'id')
  {
    if (!$this->getRequestParameter($id))
    {
      $ateneareferencia = new Ateneareferencia();
    }
    else
    {
      $ateneareferencia = AteneareferenciaPeer::retrieveByPk($this->getRequestParameter($id));

      $this->forward404Unless($ateneareferencia);
    }

    return $ateneareferencia;
  }

  protected function processFilters()
  {
  }

  protected function processSort()
  {
    if ($this->getRequestParameter('sort'))
    {
      $this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'sf_admin/ateneareferencia/sort');
      $this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'sf_admin/ateneareferencia/sort');
    }

    if (!$this->getUser()->getAttribute('sort', null, 'sf_admin/ateneareferencia/sort'))
    {
    }
  }

  protected function addFiltersCriteria($c)
  {
  }

  protected function addSortCriteria($c)
  {
    if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/ateneareferencia/sort'))
    {
      $sort_column = AteneareferenciaPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
      if ($this->getUser()->getAttribute('type', null, 'sf_admin/ateneareferencia/sort') == 'asc')
      {
        $c->addAscendingOrderByColumn($sort_column);
      }
      else
      {
        $c->addDescendingOrderByColumn($sort_column);
      }
    }
  }

  protected function getLabels()
  {
    return array(
      'ateneareferencia{referido_id}' => 'Referidor:',
      'ateneareferencia{fecha}' => 'fecha:',
      'ateneareferencia{motivo_ref}' => 'Motivo:',
      'ateneareferencia{recomendaciones}' => 'Recomendaciones:',
    );
  }
	
}
